package com.campusbackend.entity.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 学生队伍信息VO
 * </p>
 *
 * @author yezi
 * @since 2025-07-29
 */
@Data
@Schema(name = "StudentTeamVO", description = "学生队伍信息VO")
public class StudentTeamVO {

    @Schema(description = "学生ID")
    private Long studentId;

    @Schema(description = "学生姓名")
    private String studentName;

    @Schema(description = "学号")
    private String studentNumber;

    @Schema(description = "学院")
    private String college;

    @Schema(description = "所属队伍信息")
    private TeamInfo teamInfo;

    /**
     * 队伍信息
     */
    @Data
    @Schema(name = "TeamInfo", description = "队伍信息")
    public static class TeamInfo {
        
        @Schema(description = "队伍ID")
        private Long teamId;
        
        @Schema(description = "队伍名称")
        private String teamName;
        
        @Schema(description = "队伍编号")
        private String teamCode;
        
        @Schema(description = "队伍类型")
        private String teamType;
        
        @Schema(description = "团队介绍")
        private String teamIntro;
        
        @Schema(description = "当前参与的比赛")
        private String currentCompetition;
        
        @Schema(description = "获奖情况")
        private String awardInfo;
        
        @Schema(description = "当前成员数量")
        private Integer currentMembers;
        
        @Schema(description = "最大成员数量")
        private Integer maxMembers;
        
        @Schema(description = "队伍状态：1-正常，0-解散")
        private Byte status;
        
        @Schema(description = "创建时间")
        private LocalDateTime createTime;

        @Schema(description = "指导老师ID")
        private Long instructorId;

        @Schema(description = "指导老师信息")
        private InstructorInfo instructor;
        
        @Schema(description = "队伍成员列表")
        private List<MemberInfo> members;
        
        @Schema(description = "入驻专家列表")
        private List<ExpertInfo> experts;
        
        @Schema(description = "学生在队伍中的角色")
        private String memberRole;
        
        @Schema(description = "学生的评分")
        private BigDecimal score;
        
        @Schema(description = "加入时间")
        private LocalDateTime joinTime;
    }

    /**
     * 指导老师信息
     */
    @Data
    @Schema(name = "InstructorInfo", description = "指导老师信息")
    public static class InstructorInfo {
        
        @Schema(description = "教师ID")
        private Long teacherId;
        
        @Schema(description = "工号")
        private String employeeId;
        
        @Schema(description = "真实姓名")
        private String realName;
        
        @Schema(description = "专业职称")
        private String professionalTitle;
        
        @Schema(description = "邮箱")
        private String email;
        
        @Schema(description = "手机号")
        private String phone;
        
        @Schema(description = "头像")
        private String avatar;
    }

    /**
     * 队伍成员信息
     */
    @Data
    @Schema(name = "MemberInfo", description = "队伍成员信息")
    public static class MemberInfo {
        
        @Schema(description = "学生ID")
        private Long studentId;
        
        @Schema(description = "学号")
        private String studentNumber;
        
        @Schema(description = "真实姓名")
        private String realName;
        
        @Schema(description = "学院")
        private String college;
        
        @Schema(description = "队员角色")
        private String memberRole;
        
        @Schema(description = "评分")
        private BigDecimal score;
        
        @Schema(description = "加入时间")
        private LocalDateTime joinTime;
        
        @Schema(description = "头像")
        private String avatar;
    }

    /**
     * 入驻专家信息
     */
    @Data
    @Schema(name = "ExpertInfo", description = "入驻专家信息")
    public static class ExpertInfo {
        
        @Schema(description = "专家ID")
        private Long expertId;
        
        @Schema(description = "工号")
        private String employeeId;
        
        @Schema(description = "真实姓名")
        private String realName;
        
        @Schema(description = "专业职称")
        private String professionalTitle;
        
        @Schema(description = "邮箱")
        private String email;
        
        @Schema(description = "手机号")
        private String phone;
        
        @Schema(description = "头像")
        private String avatar;
        
        @Schema(description = "入驻时间")
        private LocalDateTime joinTime;
    }
}
